export class MockSSEResponse {
  constructor(data) {
    this.data = data || {
      reasoning: `牛顿第一定律，也称为惯性定律，是物理学的基本定律之一。这个定律指出，如果一个物体没有受到外力的作用，那么它将保持静止状态或匀速直线运动状态。牛顿在他的著作《自然哲学的数学原理》中首次明确地表述了这一定律。惯性定律揭示了物体的自然状态是保持其运动状态不变，除非有外力干扰。这打破了亚里士多德的观点，后者认为物体的自然状态是静止。`,
      content: `**牛顿第一定律（惯性定律）**：每个物体都保持其静止状态或匀速直线运动状态，直到外力改变其状态。

这一定律有几个关键点：
1. 没有外力作用时，静止的物体将保持静止
2. 没有外力作用时，运动的物体将保持匀速直线运动
3. 这一定律定义了"惯性"的概念
4. 它挑战了亚里士多德的观点，后者认为物体自然状态是静止的
5. 它仅在惯性参考系中完全成立

牛顿第一定律是经典力学的基础之一，为理解运动和力的关系提供了基本框架。`
    };
    this.controller = new AbortController();
  }

  async getResponse() {
    const { signal } = this.controller;
    const { reasoning, content } = this.data;

    // 将内容分成小块
    const reasoningChunks = this.chunkString(reasoning, 10);
    const contentChunks = this.chunkString(content, 10);

    // 创建一个可读流
    const stream = new ReadableStream({
      start: async (controller) => {
        try {
          // 模拟流式传输
          for (let i = 0; i < Math.max(reasoningChunks.length, contentChunks.length); i++) {
            if (signal.aborted) {
              controller.close();
              return;
            }

            const delta = {
              reasoning_content: reasoningChunks[i] || '',
              content: contentChunks[i] || '',
            };

            const chunk = JSON.stringify({
              delta,
            });

            controller.enqueue(new TextEncoder().encode(chunk + '\n'));
            await new Promise(resolve => setTimeout(resolve, 100)); // 模拟延迟
          }
          controller.close();
        } catch (error) {
          controller.error(error);
        }
      },
    });

    return new Response(stream, {
      headers: {
        'Content-Type': 'text/event-stream',
        'Cache-Control': 'no-cache',
        'Connection': 'keep-alive',
      },
    });
  }

  chunkString(str, size) {
    if (!str) return [];
    const chunks = [];
    for (let i = 0; i < str.length; i += size) {
      chunks.push(str.slice(i, i + size));
    }
    return chunks;
  }
} 